package com.aaa.mapper.back;

import com.aaa.entity.*;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

@Mapper
public interface AllotMapper {

    /**
     * 查询未审核的调拨单
     * @return
     */
    List<Map<String,Object>> findAllotState();

    /**
     * 查询未审核的调拨单
     * @return
     */
    List<Map<String,Object>> findAllotState0();

    /**
     * 查询未审核的调拨单
     * @return
     */
    List<Map<String,Object>> findAllotByAllotState1();

    /**
     * 查询已审核的调拨单
     * @return
     */
    List<Map<String,Object>> findAllotByAllotState0();

    /**
     * 根据调拨单编号查询调拨单明细
     * @return
     */
    List<Map<String,Object>> findAllotDetails(String allotId);


    /**
     * 查询调拨出库单（未出库）
     * 状态：1（未出库）
     * @return
     */
    List<Map<String,Object>> findAllotOut1();

    /**
     * 查询调拨出库单（已出库）
     * 状态：0（已出库）
     * @return
     */
    List<Map<String,Object>> findAllotOut0();

    /**
     * 查询调拨入库单（未入库）
     * 状态：1（未入库）
     * @return
     */
    List<Map<String,Object>> findAllotEntry1();

    /**
     * 查询调拨出库单（已入库）
     * 状态：0（已入库）
     * @return
     */
    List<Map<String,Object>> findAllotEntry0();

    /**
     * 根据出库单编号查询出库单
     * @param allotOutId
     * @return
     */
    AllotOut findByAllotOutId(String allotOutId);

    /**
     * 根据入库单编号查询入库单
     * @param allotEntryId
     * @return
     */
    AllotEntry findByAllotEntryId(String allotEntryId);

    /**
     * 根据调拨出库单编号查询调拨出库单明细
     * @return
     */
    List<Map<String,Object>> findAllotOutDetails(String allotOutId);

    /**
     * 根据调拨入库单编号查询调拨入库单明细
     * @return
     */
    List<Map<String,Object>> findAllotEntryDetails(String allotEntryId);

    /**
     * 根据调拨出库单编号查询调拨出库单明细
     * @return
     */
    List<AllotOutDetails> findByAllotOutDetails(String allotOutId);

    /**
     * 根据调拨入库单编号查询调拨入库单明细
     * @return
     */
    List<AllotEntryDetails> findByAllotEntryDetails(String allotEntryId);

    /**
     * 修改调拨单未审核为已审核
     * @param allotId
     * @return
     */
    int editAllot1(String allotId);

    /**
     * 创建调拨单
     * @param allot
     * @return
     */
    int addAllot(Allot allot);

    /**
     * 创建调拨明细
     * @return
     */
    int addAllotDetails(AllotDetails allotDetails);

    /**
     * 生成调拨出库单
     * @param allotOut
     * @return
     */
    int addAllotOut(AllotOut allotOut);

    /**
     * 生成调拨出库明细单
     * @param allotOutDetails
     * @return
     */
    int addAllotOutDetails(AllotOutDetails allotOutDetails);

    /**
     * 生成调拨入库单
     * @param allotEntry
     * @return
     */
    int addAllotEntry(AllotEntry allotEntry);

    /**
     * 生成调拨入库明细单
     * @param allotEntryDetails
     * @return
     */
    int addAllotEntryDetails(AllotEntryDetails allotEntryDetails);

    /**
     * 更改调拨出库单（未出库）为（已出库）
     * @param allotOut
     * @return
     */
    int editAllotOut(AllotOut allotOut);

    /**
     * 更改调拨入库单（未入库）为（已入库）
     * @param allotEntry
     * @return
     */
    int editAllotEntry(AllotEntry allotEntry);

    /**
     *减少库存数量
     * @param map
     * @return
     */
    int editWarehouseDetailsReduce(Map<String, Object> map);

    /**
     *增加库存数量
     * @param map
     * @return
     */
    int editWarehouseDetailsIncrease(Map<String, Object> map);


    String findAllotByMAX();
}
